모의해킹
호스트기반모의해킹_06_서비스 스캐닝
작성자 : Heehyeon Yoo|2025-11-18
# 모의해킹# 정보수집# Nmap# Banner Grabbing# NSE
1. 개요(Overview)
포트 스캐닝이 "문이 열려있는가?"를 확인하는 것이라면, 서비스 스캐닝은 "그 문 뒤에 누가(Who) 있고, 버전(Version)은 무엇인가?"를 식별하는 과정이다.
- 포트 번호(예: 2222)만으로는 실제 서비스를 확신할 수 없다. (2222 포트에 SSH가 돌 수도, Web이 돌 수도 있다.)
- 목표: 정확한 서비스 명(Service Name)과 버전 정보(Version Info)를 획득하여, 해당 버전에 존재하는 CVE(취약점)를 찾아내는 것.
2. 배너 그래빙(Banner Grabbing)
서비스에 연결했을 때 서버가 보내주는 초기 환영 메시지(Banner)를 수집하는 기법이다.
2.1 패시브 배너 그래빙(Passive Banner Grabbing)
- 방식: 단순히 TCP 연결(3-Way Handshake)을 맺고 서버가 먼저 말을 걸 때까지 기다린다.
- 동작:
(Connect) Server: "220 (vsFTPd 3.0.3)" <-- 이것이 배너 - 특징: 서버가 자발적으로 정보를 노출하는 경우 유용하다. Nmap
-sT수행 시 자동으로 일부 확인 가능하다.
2.2 액티브 서비스 프로빙(Active Service Probing)
- 문제: 보안 설정된 서버는 연결해도 아무 말 없이 침묵(Silence)한다.
- 방식: Nmap이 다양한 프로브 패킷(Probe Packets)을 서버에 던져보고, 되돌아오는 응답 패턴(Response Pattern)을 분석해 서비스를 추측한다.
- 도구:
nmap -sV [IP]- Nmap은 약 16,000개 이상의 서비스 시그니처 데이터베이스(
nmap-service-probes)를 보유하고 있어, 미지의 응답과 매칭하여 버전을 식별한다.
- Nmap은 약 16,000개 이상의 서비스 시그니처 데이터베이스(
3. Nmap 스크립트 엔진(Nmap Scripting Engine, NSE)
Nmap의 기능을 확장하는 강력한 스크립트 도구. Lua 언어로 작성되어 있다.
- 기본 스크립트 실행:
nmap -sC [IP](또는--script=default)- 가장 안전하고 유용한 기본 스크립트 세트를 실행한다.
- 예시: FTP 서비스 발견 시
ftp-anon스크립트가 자동 실행되어 익명 로그인(Anonymous Login) 가능 여부를 즉시 확인해준다. - 경로: 리눅스 기준
/usr/share/nmap/scripts/에 저장되어 있다.
4. 수동 점검 및 클라이언트 활용(Manual Verification)
자동화 도구(Nmap)가 실패하거나 정밀 분석이 필요할 때 사용한다.
4.1 넷캣(Netcat, nc)
- 용도: Raw TCP 연결을 통해 서버와 직접 대화하며 응답을 확인한다.
- 방법:
nc [IP] [PORT] (연결 후 HELP, HEAD / HTTP/1.0 등의 명령어 입력) - 분석: Wireshark를 함께 띄워놓고 주고받는 패킷 내용을 분석하면, 숨겨진 헤더나 에러 메시지에서 힌트를 얻을 수 있다.
4.2 전용 클라이언트(Native Clients)
- 용도: Raw Packet이 아닌, 해당 프로토콜의 정규 클라이언트 프로그램을 사용하면 더 정확한 정보를 얻을 수 있다.
- 예시:
- FTP:
ftp [IP](터미널 FTP 클라이언트) - Web:
curl -v [URL]또는 웹 브라우저 - SMB/Samba:
enum4linux,crackmapexec
- FTP:
5. 실무에서는?
"Nmap이 알려주지 않으면 모른다"가 되어서는 안 된다.
- 자동화(Nmap):
-sV,-sC로 전체적인 윤곽을 잡는다. - 수동 검증(Manual): 중요 포트나 식별되지 않은 서비스는
nc나 전용 클라이언트로 직접 접속하여 "대화"를 시도해야 한다. - 결과 정리: 수집된 서비스와 버전 정보는 에디터에 깔끔하게 정리해두어야 추후 취약점 검색(Searchsploit 등)에 활용할 수 있다.